Курс по RxJS (Reactive-Extensions) 2017 Данный курс посвящен такой библиотеке, написанной на языке JavaScript, как RxJs (Reactive-Extensions). Это очень мощная библиотека, которая пропагандирует реактивный подход программирования и позволяет крайне комфортно работать с асинхронными операциями. А так как весь javascript работает с событиями и асинхронными операциями, то применение данной библиотеки позволяет очень сильно оптимизировать приложение и упростить код. RxJs стала настолько популярной, что вполне вероятно, что она будет включена в спецификацию языка, то есть стать его нативной частью. В данном курсе мы будем разбирать все примеры используя последний синтаксис javascript - es6. В процессе курса мы затронем все основополагающие моменты, которые присутствуют в библиотеке - начиная от способов создания стрима, до обработки данных, ошибок и дочерних классов. Результатом данного курса будет мини приложение, которое будет делать асинхронные запросы к удаленному API серверу социальной сети ВКонтакте. На его примере мы рассмотрим, как можно применить некоторые функции библиотеки на реальном приложении и как они сильно упрощают понимание и написание кода. Урок 1. RxJS (Reactive-Extensions). Установка и создание первого стрима: От автора: с этого урока мы с вами начнем изучение библиотеки RxJs (Reactive-Extensions), предназначенная для реактивного программирования на языке javascript. Из урока вы узнаете, что такое библиотека RxJs и зачем она нужна. В результате данного урока мы с вами установим библиотеку локально, и разберем базовый ее функционал — создание первого стрима. Мы разберем, как с помощью функции create создавать стрим, что такое Observable, observer и какие у него есть методы. Далее мы подпишемся на изменение стрима с помощью функции subscribe и будем рассматривать как синхронные события, так и асинхронные события стрима. В конце урока мы еще поговорим про то, как стрим завершить, как библиотека RxJs оптимизирует наш проект и поговорим про обработку ошибок. Урок 2. RxJS (Reactive-Extensions). Создание стрима из события. Функция fromEvent: От автора: с этого урока мы с вами начнем учить, как можно создавать стримы из разных типов данных в RxJS (Reactive-Extensions). И конкретно в этом уроке мы разберем способ создания стрима из событий. Из урока вы узнаете, как создавать стримы из событий с помощью функции fromEvent. В результате урока мы создадим 3 стрима, на примере которых разберем, как данный метод работает и как его можно использовать на практике. Урок 3. RxJS (Reactive-Extensions). Создание стрима. Простые операторы: От автора: в этом уроке мы поговорим о том, как можно создавать стримы из простых типов данных и с применением некоторых вспомогательных операторов в RxJS (Reactive-Extensions). В этом уроке вы узнаете, как можно создавать стримы из простых типов данных — строк, чисел, массивов и тд. Далее мы разберем как можно создавать стримы с помощью вспомогательных методов, например, из диапазона чисел, интервала времени или таймера. В результате урока мы разберем функцию of, interval, timer и range. Также мы создадим функцию createSubscribe для того, чтобы проще было обращаться к функции subscribe. Урок 4. RxJS (Reactive-Extensions). Создание стрима из массивов: От автора: в этом уроке мы рассмотрим способ создание стримов из массивов и массивоподобных типов данных. В данном уроке мы с вами разберем метод from, который позволяет создавать стримы из массивов. В результате данного урока мы с вами увидим, как можно создавать стримы из массивов с различными элементами, будь то строки или объекты, а так же поговорим про то, как можно создавать стримы из объектов типа Map или Set. Урок 5. RxJS (Reactive-Extensions). Создание стрима из промисов: От автора: промисы в javascript — конструкции, предназначенные для удобной работы с асинхронным кодом. RxJs делает аналогичную функцию, но немного другим путем. В этом уроке мы разберем как совместить данные подходы в один. В этом уроке мы повторим, что такое промисы в javascript. Далее мы попробуем создать стрим из промиса с помощью библиотеки RxJs. В результате урока мы с вами напишем реализацию функции задержки на промисах и объединим это в стрим с помощью функции fromPromise. Урок 6. RxJS (Reactive-Extensions). Операторы для трансформации. Метод map: От автора: с этого урока мы с вами начнем изучение полезных методов в библиотеке RxJs для трансформации данных. Из урока вы узнаете про один из самых основных методов для трансформации данных в библиотеке RxJs — метод map. В результате урока мы разберем как можно использовать метод map на примере разных типов данных — объектов, чисел и строк. В конце урока мы разберем еще один метод, который является аналогом метода map — pluck, для работы с объектами. Урок 7. RxJS (Reactive-Extensions). Операторы для выбора: От автора: в этом уроке мы рассмотрим множество полезных операторов для умной выборки данных из стрима. В этом уроке вы узнаете про разные полезные операторы, которые позволяют делать умную выборку из стрима, например, выбор данных по разным условиям. В результате урока мы разберем несколько методов: first, last, find, findIndex, take, skip, skipWhile, takeWhile, skipUntil и takeUntil. Урок 8. RxJS (Reactive-Extensions). Операторы для фильтрации: От автора: в практике часто встречается задача фильтрации данных перед последующей их обработке. Библиотека RxJs предоставляет нам множество удобных инструментов для этого. В этом уроке вы узнаете про удобные инструменты, которые есть в библиотеке RxJs для фильтрации данных с последующей их обработкой. Вы узнаете, как правильно работать с этими методами. В результате урока мы разберем несколько методов: filter, debounceTime и distinct. Напишем простое приложение для динамического вывода марки машины по запросу с различными защитами, используя методы фильтрации. Урок 9. RxJS (Reactive-Extensions). Буферы: От автора: часто встречается задача по буферизации каких-либо данных. Библиотека RxJs предоставляет очень удобные инструменты для реализации данной задачи. Из урока вы узнаете, что такое буфферы в библиотеке rxjs и как с ними работать. В результате данного урока мы разберем как буфферы использовать и в каких случаях их стоит применять. Мы разберем несколько вариантов данных методов: buffer, bufferTime, bufferCount. Урок 10. RxJS (Reactive-Extensions). Утилиты: От автора: в этом уроке мы познакомимся с некоторыми полезными утилитами или вспомогательными методами, которые позволяют очень удобно работать со стримами. Из урока вы узнаете про некоторые не очень большие, но при этом очень полезные функции-утилиты в библиотеке RxJS. В результате урока мы разберем несколько утилит: defaultIfEmpty, every, do, delay и let. Урок 11. RxJS (Reactive-Extensions). Совмещение стримов. Merge и Concat: От автора: на практике мы часто сталкиваемся с задачей, когда работа идет не с одним стримом, а со множеством. Для более удобной работы над этой задачей, библиотека RxJs предлагает несколько решений, которые мы начнем рассматривать в этом уроке. Из урока вы узнаете, как несколькими способами можно совмещать стримы. В результате урока мы на практических примерах разберем, как можно использовать методы RxJs для совмещения: merge, mergeAll, concat и concatAll. Урок 12. RxJS (Reactive-Extensions). Совмещение стримов. MergeMap, ConcatMap: От автора: в этом уроке мы продолжим изучать методы, которые позволяют объединять стримы. В этом уроке вы узнаете, как можно оптимизировать описание нескольких стримов в один, для того, чтобы не писать, например, несколько раз функцию subscribe. В результате данного урока вы познакомитесь еще с двумя полезными функциями mergeMap и concatMap. Урок 13. RxJS (Reactive-Extensions). Совмещение стримов. Zip, CombineLatest: От автора: в этом уроке мы рассмотрим последние методы, которые удобно позволяют работать со множеством стримов и их объединением в один. Из урока вы узнаете еще про 2 интересных метода, которые позволяют объединять и хранить множество стримов как один. В результате данного урока мы узнаем, как пользоваться методами zip и combineLatest. Урок 14. RxJS (Reactive-Extensions). Обработка ошибок: От автора: правильная обработка ошибок позволит вашему приложению работать даже в том случае, если что-то пошло не так. Для этого в библиотеке RxJs есть мощный инструмент, который мы и рассмотрим в данном уроке. В этом уроке вы узнаете, как с помощью библиотеки RxJS обрабатывать ошибки стрима, для того, чтобы приложение работало корректно и не ломалось. В результате урока мы разберем несколько функций, предназначенных для удобной работы с ошибками: throw, catch, onErrorResumeNext. Урок 15. RxJS (Reactive-Extensions). Классы Subject: От автора: помимо основного класса Observable в RxJs есть множество дочерних классов, которые делают похожий функционал, но с небольшими отличиями. Из урока вы узнаете, что такое Subject и чем он отличается от Observable. Вы узнаете, как с помощью стримов данного типа можно слушать и задавать различные события. В результате урока мы рассмотрим целое семейство классов Subject и узнаем чем каждый из них отличается. Мы рассмотрим Subject, BehaviorSubject, ReplaySubject и AsyncSubject. Урок 16. RxJS (Reactive-Extensions). Практика. Приложение получение пользователей из VK: От автора: этот урок показывает практическое применение некоторых функций библиотеки RxJS — насколько она облегчает реализацию многих задач, которые очень часто встречаются в обычных приложениях. Из урока вы узнаете, как написать приложение, которое получает определенного пользователя из социальной сети ВКонтакте, написанное с применением библиотеки RxJs. В результате урока у нас будет поле, куда мы будем записывать ID человека, а все остальное, с различными защитами, фильтрациями и проверками будет автоматически делаться бибилотекой RxJS. Вы увидите, как удобно применяя некоторые ее функции писать приложения.